package decomplier;

import java.io.IOException;

/**
 * 这个需要使用命令行cmd进行操作，
	步骤：将java-decompiler.jar放在需要解压的jar包目录下->新建一个文件夹（用于存放反编译后的压缩包）->该目录下打开cmd.exe->输入
	java -cp java-decompiler.jar 
	org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true 
	xxx.jar xxx
	保存：运行命令后会在xxx文件夹下面生成一个与原先的jar包同名的文件，加压缩即可；
	说明：
	（1）xxx.jar是需要反编译的jar包的全名
	（2）xxx是新建的文件夹的全名
	（3）如果 java-decompiler.jar与jar包不在同一目录下，则需要 java-decompiler.jar指定路径，
	比如将上面的java-decompiler.jar改成 
	“D:\IntelliJ\plugins\java-decompiler\lib\java-decompiler.jar”
	反编译效果比较好
 */
public class Decomplier {
	
	/**
	 * 执行反编译命令
	 * @param jarPath
	 * @param outPath
	 */
	public void exeDecomplier(String jarPath, String outPath) {
		String decompilerPath = " libs/java-decompiler.jar ";
		StringBuilder command = new StringBuilder();
		command.append(" java -cp ");
		command.append(decompilerPath);
		command.append(" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true "
				);
		command.append(jarPath);
		command.append(" ");
		command.append(outPath);
		CmdExecution cmdExe = new CmdExecution();
		cmdExe.execution(command.toString());
	}
	
	public static void main(String[] args) {
		String jarName = "asset.jar";
		String jarPath = "libs/" + jarName ;
		String outPath = "compare";
		Decomplier complier = new Decomplier();
		//解压jar包 
		complier.exeDecomplier(jarPath, outPath);
		System.out.println("反编译完成");
		UnzipJar unzip = new UnzipJar();
		try {
			String unzipName = "asset_unzip";
			String unzipJarPath = outPath + "/" + jarName;
			String unzipOutPath = outPath + "/" + unzipName;
			unzip.unzipJar(unzipOutPath, unzipJarPath);
			System.out.println("解压缩完成");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

